package com.sinai.mshab.client.ui.aggregate;

import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.sinai.mshab.client.ui.FormComponent;

/**
 * <code>AggregateFormComponent</code> offers another layer between aggregate
 * components and {@link FormComponent}. This allows for the creation of
 * aggregate component specific methods that are enforced in all aggregate
 * components, without forcing the methods on basic components.
 * 
 * @author Arthur Kalmenson
 */
public abstract class AggregateFormComponent extends FormComponent {

	public abstract Object clone();

	public void sendAnswer(DataReceiver receiver) {
		// TODO Auto-generated method stub

	}

	/**
	 * Returns a printable version of this <code>AggregateFormComponent</code>.
	 * The {@link VerticalPanel} contains {@link HorizontalPanel}s aggregated
	 * from sub-components.
	 * 
	 * @return a printable version of this <code>AggregateFormComponent</code>.
	 */
	public abstract VerticalPanel toReport();
}
